
    use: 'ie.ondevice.objectkit.utility.compiler.ClassLoader';
    use: 'ie.ondevice.objectkit.utility.compiler.ClassPath';
    use: 'ie.ondevice.objectkit.utility.compiler.ClassFile';
    
    MultiPathClassLoader.inherit(ClassLoader).implement
    (
        {
            /**
             * @private
             * The list of classpaths that the loader will use to
             * resolve classes agains
             * @type {Array.<ClassPath>}
             */
            classpaths: null
            
            /**
             * Add a classpath to the loader.
             * @param {String} value
             */
        ,   addClasspath: function (value) 
            {
                if (!Classpath.is(value))
                    value= new ClassPath(value);
                    
                this.classpaths.push(value);
            }
            
            /**
             * Remove a classpath. The classpath will no longer be used
             * to resolve classes against.
             * @param {String, Classpath} value
             * @return {void}
             */
        ,   removeClasspath: function (value) 
            {
                for (var i= 0, n= this.classpaths.length; i < n; i++) 
                {
                    if (value == this.classpaths[i]) 
                    {
                        this.classpaths.splice(i, 1);
                        return;
                    }
                }
            }
            
            /**
             * @inheritDoc
             * @override
             */
        ,   load: function (canonicalName) 
            {
                var classFile= null;
                for (var i= 0, n= this.classpaths.length; i < n; i++) 
                {
                    this.classpath= this.classpaths[i];
                    try 
                    {
                        classFile= this.parent.load.call(this, classpath);
                        break;
                    }
                    catch (thrown) 
                    {
                        console.log(thrown.stack || thrown);
                    }
                }
                
                this.classpath= null;
                if (ClassFile.is(classFile))
                    return classFile;
                     
                throw new ReferenceError('Could not resolve ' + canonicalName);
            }
        }
    );
    
    /**
     * MultiPathClassLoader supports multiple class paths. This is intended
     * for use with development environments only due to the potential network
     * overhead incurred.
     * @constructor
     * @extends ClassLoader
     */
    function MultiPathClassLoader ()
    {
        this.classpaths= [new ClassPath('/Asset/Library')];
        this.classpath= null;
    };
